개요
namespace를 생성하고 Resource를 할당하는 방법
Namespace
필요성
하나의 cluster 안에서 여러 사용자가 있는 경우 논리적으로 구분해 Resource를 운용할 필요가 있다. 다른 사용자의 Resource에 접근하여 데이터를 수정하거나 변경하게 되면 큰 문제가 발생할 수 있기 때문이다.
하지만 namespace는 물리적으로 격리가 되어 있지는 않다. 서로 다른 namespace에서 생성된 Pod가 한 node안에 있을 수 있기 때문이다.
하지만 node를 특정 사용자가 삭제해도 알아서 Scheduling을 하여 생성된 복제본 Pod로 옮겨져 통신이 되기 때문에 문제는 없고 실사용자 입장에서는 격리되어 운영되고 있다고 느껴진다.
namespace 생성
yaml로 생성하기
./ns.yaml
apiVersion: v1
kind: namespace
metadata:
name: new-ns # new-ns는 새로 생성할 namespace 이름
kubectl apply
명령어로 네임스페이스 생성
$ kubectl apply -f ./ns.yaml
명령어로 생성하기
kubectl create namespace/[namespace명]
OR
kubectl create namespace [namespace명]
OR
kubectl create ns [namespace명]
resource 할당
위에서 생성한 네임스페이스에 리소스를 할당해보자.
먼저, 간단한 Pod 명세를 작성해보자.
./pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: test-pod-1
namespace: new-ns
labels:
type: pod
spec:
containers:
- name: container1
image: nginx:latest
ports:
- containerPort: 80
protocol: TCP
여기서 주의깊게 봐야할 코드는 metadata.namespace
부분이다. 명세서 작성 시 해당 리소스가 어느 네임스페이스에 할당하게 할건지 다음처럼 지정해줄 수 있다. 당연히 지정이 안되어있다면 Default로 할당된다